import { IPSAppDEUILogic } from '../../app/dataentity/ipsapp-deuilogic';
import { IPSAppDataEntity } from '../../app/dataentity/ipsapp-data-entity';
import { IPSAppUILogic } from '../../app/logic/ipsapp-uilogic';
import { IPSAppViewLogic } from '../../app/view/ipsapp-view-logic';

/**
 *
 * @export
 * @interface IPSPanelLogic
 */
export interface IPSPanelLogic extends IPSAppViewLogic {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 事件参数
   * @type {string}
   */
  eventArg: string;

  /**
   * 事件参数2
   * @type {string}
   */
  eventArg2: string;

  /**
   * 事件名称
   * @type {string}
   */
  eventNames: string;

  /**
   * 逻辑名称
   * @type {string}
   */
  logicName: string;

  /**
   * 逻辑触发
   * @description 值模式 [系统面板逻辑类型] {TIMER：定时器触发、 PANELEVENT：面板事件触发、 CTRLEVENT：部件事件触发、 ITEMVISIBLE：项显示逻辑、 ITEMENABLE：项启用逻辑、 ITEMBLANK：项空输入逻辑、 ITEMDYNACLASS：项动态样式表、 RENDER：绘制器、 ATTRIBUTE：注入属性、 CUSTOM：自定义、 VUE_DIRECTIVE：VUE指令 }
   * @type {( string | 'TIMER' | 'PANELEVENT' | 'CTRLEVENT' | 'ITEMVISIBLE' | 'ITEMENABLE' | 'ITEMBLANK' | 'ITEMDYNACLASS' | 'RENDER' | 'ATTRIBUTE' | 'CUSTOM' | 'VUE_DIRECTIVE')}
   */
  logicTrigger:
    | string
    | 'TIMER'
    | 'PANELEVENT'
    | 'CTRLEVENT'
    | 'ITEMVISIBLE'
    | 'ITEMENABLE'
    | 'ITEMBLANK'
    | 'ITEMDYNACLASS'
    | 'RENDER'
    | 'ATTRIBUTE'
    | 'CUSTOM'
    | 'VUE_DIRECTIVE';

  /**
   * 触发逻辑类型
   * @description 值模式 [部件逻辑目标类型] {APPDEUILOGIC：应用实体界面逻辑、 APPDEUIACTION：应用实体界面行为、 APPUILOGIC：应用预置界面逻辑、 APPVIEWLOGIC：视图逻辑、 APPVIEWENGINE：视图引擎、 PFPLUGIN：前端扩展插件、 SCRIPT：脚本代码、 DEUILOGIC：实体界面逻辑（兼容）、 DEUIACTION：实体界面行为（兼容）、 SYSVIEWLOGIC：系统预置界面逻辑（兼容） }
   * @type {( string | 'APPDEUILOGIC' | 'APPDEUIACTION' | 'APPUILOGIC' | 'APPVIEWLOGIC' | 'APPVIEWENGINE' | 'PFPLUGIN' | 'SCRIPT' | 'DEUILOGIC' | 'DEUIACTION' | 'SYSVIEWLOGIC')}
   */
  logicType:
    | string
    | 'APPDEUILOGIC'
    | 'APPDEUIACTION'
    | 'APPUILOGIC'
    | 'APPVIEWLOGIC'
    | 'APPVIEWENGINE'
    | 'PFPLUGIN'
    | 'SCRIPT'
    | 'DEUILOGIC'
    | 'DEUIACTION'
    | 'SYSVIEWLOGIC';

  /**
   * 应用实体界面逻辑
   *
   * @type {IPSAppDEUILogic}
   */
  getPSAppDEUILogic(): IPSAppDEUILogic | null;

  /**
   * 应用实体对象
   *
   * @type {IPSAppDataEntity}
   */
  getPSAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 应用预置界面逻辑
   *
   * @type {IPSAppUILogic}
   */
  getPSAppUILogic(): IPSAppUILogic | null;

  /**
   * 定时间隔（ms）
   * @type {number}
   * @default 0
   */
  timer: number;
}
